技術問答
技術文章
iT 徵才
Tag
聊天室
2024 鐵人賽
登入/註冊
問答
文章
Tag
邦友
鐵人賽
搜尋
第 12 屆 iThome 鐵人賽
DAY
6
0
自我挑戰組
30天|入門NestJs連載學習筆記
系列 第
6
篇
D06 CH8 | OCP 開放-封閉原則
12th鐵人賽
azsx96385
團隊
Outcome First
2020-09-19 16:40:58
976 瀏覽
分享至
1. 一個好的軟體架構,可以將修改的程式碼量,降到最低程度,理想狀況為0
目標-使系統易於擴展,而不會因修改而產生較大的影響
透過將系統劃分為元件,並將元件安排到依賴階層中而實現的,這類階層結構可以保護較高層級的元件,免受到低層級元件的變更所影響
2. 越上層的元件,擁有越核心的商業邏輯
離I/O越遠的元件層級越高,離I/O越近的層級越
越上層的元件,擁有越核心的商業邏輯
用櫃檯小姐的故事來說明(參考連結1)
想像一下你(user)今天走進一間公司(I/O),負責接待你的,請你填寫資料的是櫃檯小姐(低層級-處理實作),如果你是來談一筆大生意的,你會經過櫃檯,走到最裡面的落地窗辦公室,老闆正在那準備跟你討論(高層級-核心商業邏輯),我覺得這個說法滿容易想像和理解的,完整內容,請參考下方連結
3. 什麼是元件?
大 [系統層級← 元件層級←模組層級←類別層級←程式碼層級 ] 小
可單獨部署的單位,是系統在部屬的最小部分實體
讀這篇的時候,我一直把元件和模組搞混,後續Ch12有針對元件做一個好像有說,又沒什麼用的定義,一切都是需要感覺,總之我自己認定的是,兩者差異在是否可以被獨立部署,或是說獨立啟動而不需要依賴其他模組,舉例來說像是微服務,我接受是元件,可獨立部署,且包含一個以上的模組
4. 如果元件A應該被保護免於受到“元件B的改變”影響,那麼元件B應該依賴元件A,A←依賴←B,B中會 import A ,B知道A,但A不知道B
(B)低層級實作細節,應該依賴於(A)高層級商業邏輯
前台客服,替顧客服務的內容(實作細節),應該遵守老闆的的規定(商業邏輯)
在這個部分,看懂書中p61頁的圖會滿有幫助的,其中有兩個重點,大板塊的是元件,箭頭的指向則是依賴關係,觀察依賴關係的時候,可以特別著重誰依賴誰,因此如果有變動,受影像的是哪一方,我認為本篇對我的學習重點是
學習使用 import 和看箭頭方向區分依賴關係,謹慎規劃不同模組或是類別間的依賴關係
理解 為何依賴方向,可以保護被依賴者,不受影響,資訊隱藏的好處
參考
搞笑談軟工-Clean Architecture(4):架構三原則首部曲—分層原則
留言
追蹤
檢舉
上一篇
D05 CH7 | SRP 單一職責原則
下一篇
D07 CH9 | LSP 替換原則
系列文
30天|入門NestJs連載學習筆記
共
26
篇
目錄
RSS系列文
訂閱系列文
1
人訂閱
22
D22 台南的散步點心
23
D23 台南|國慶煙火在漁光
24
D24 無暇程式碼-CH20 商業邏輯
25
D25 Ch 22 整潔的架構
26
D25 ch 22 整潔的架構
完整目錄
直播研討會
{{ item.subject }}
{{ item.channelVendor }}
{{ item.webinarstarted }}
|
{{ formatDate(item.duration) }}
直播中
立即報名
尚未有邦友留言
立即登入留言
iThome鐵人賽
參賽組數
1064
組
團體組數
40
組
累計文章數
22195
篇
完賽人數
600
人
看影片追技術
看更多
{{ item.subject }}
{{ item.channelVendor }}
|
{{ formatDate(item.duration) }}
直播中
熱門tag
看更多
15th鐵人賽
16th鐵人賽
13th鐵人賽
14th鐵人賽
12th鐵人賽
11th鐵人賽
鐵人賽
2019鐵人賽
javascript
2018鐵人賽
python
2017鐵人賽
windows
php
c#
windows server
linux
css
react
vue.js
熱門問題
請問內網IP如何轉外網IP?
兩端防火牆使用IPSEC互PING之問題
如何寫公式才能利用excel 觸發一個數據時傳送一個訊息給 自已的line呢?有沒有可以用其它方式,來取代line notify 的方法,因為line 開始收費
Windows7升級Windows10後網路功能異常
python爬蟲 動態生成網頁104人力銀行
區域網路問題提問
新手學習編程,哪種編程語言好?
vmware 虛擬機(windows)裡顯示使用容量與實際檔案容量不符合
HeidiSQL 查詢結果亂碼問題
2台 Hyper-V 2008 R2 叢集主機(硬體規格相同), 如何加入一台新機? 謝謝.
熱門回答
請問內網IP如何轉外網IP?
HeidiSQL 查詢結果亂碼問題
新手學習編程,哪種編程語言好?
Fortigate 50B 重置密碼
區域網路問題提問
熱門文章
每日一篇學習筆記 直到我做完專題 :( [Day31]
每日一篇學習筆記 直到我做完專題 :( [Day32]
每日一篇學習筆記 直到我做完專題 :( [Day33]
每日一篇學習筆記 直到我做完專題 :( [Day34]
隨時切換 WINDOWS 右鍵新舊版選單
IT邦幫忙
×
標記使用者
輸入對方的帳號或暱稱
Loading
找不到結果。
標記
{{ result.label }}
{{ result.account }}